.text
.global _start
.equ CCM_CCGR1,                          0x020C406C
.equ IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03,   0x020E0068
.equ IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03,   0x020E02F4
.equ GPIO1_DR,                           0x0209C000   
.equ GPIO1_GDIR,                          0x0209C004
                  
_start:
    @ 1. 开启GPIO1_IO03的时钟
    ldr r0,=CCM_CCGR1
    ldr r1,=0xFFFFFFFF
    str r1,[r0]

    @ 2. 配置引脚为GPIO模式 (ALT5模式)
    ldr r0,=IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03
    ldr r1,[r0]
    bic r1,r1,#0xF
    orr r1,r1,#0x5
    str r1,[r0]

    @ 3. 配置引脚的电气特性(压摆率 驱动能力 输出速度 开漏输出)
    ldr r0,=IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03
    ldr r1,[r0]
    @ 3.1 配置压摆率为低压摆率,以达到减少电磁干扰和保护LED的作用
    bic r1,r1,#0x1
    @ 3.2 配置驱动能力,GPIO引脚的安全持续驱动电流≤24mA,选择010
    orr r1,r1,#(0x2<<3)
    @ 3.3 配置输出速度为低速 
    bic r1,r1,#0xc0
    @ 3.4 禁止开漏输出
    bic r1,r1,#0x800
    str r1,[r0]
    
    @4. 配置方向寄存器为输出模式 bit[3]:1
    ldr r0,=GPIO1_GDIR
    ldr r1,[r0]
    orr r1,r1,#0x8
    str r1,[r0]

loop:
    @5. 点亮LED bit[3]:0
    ldr r0,=GPIO1_DR
    ldr r1,[r0]
    bic r1,r1,#0x8
    str r1,[r0]
    @6. 延迟一定时刻
    bl delay
    @7. 熄灭LED bit[3]:1
    ldr r0,=GPIO1_DR
    ldr r1,[r0]
    orr r1,r1,#0x8
    str r1,[r0]
    @8. 延迟一定时刻
    bl delay
    b loop
delay:
    mov r3, #0x100000
    equal:
    cmp r3, #0
    subne r3, r3, #1
    bne equal
    mov pc, lr























